package com.kuangstudy.config.redis;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.ClassPathResource;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.scripting.support.ResourceScriptSource;

/**
 * @author panghu
 * @version 1.0.0
 * @createTime 2023年09月14日 21:20:00
 * @Description
 */
@Configuration
public class LuaConfiguration {

    /**
     * 将lua脚本的内容加载出来放入到 DefaultRedisScript对象中
     * @return
     */
    @Bean
    public DefaultRedisScript<Long> userLuaScript() {
        // new一个操作redis的lua脚本的对象
        DefaultRedisScript<Long> defaultRedisScript = new DefaultRedisScript<>();
        // 找到lua脚本的存放位置，加载lua脚本
        defaultRedisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("lua/updateuser.lua")));
        // 设置lua脚本的返回值
        defaultRedisScript.setResultType(Long.class);
        // 注入到ioc容器中
        return defaultRedisScript;
    }

    /**
     * 将lua脚本的内容加载出来放入到DefaultRedisScript
     * @return
     */
    @Bean
    public DefaultRedisScript<Long> ipLimitLua() {
        DefaultRedisScript<Long> defaultRedisScript = new DefaultRedisScript<>();
        defaultRedisScript.setScriptSource(new ResourceScriptSource(new ClassPathResource("lua/iplimit.lua")));
        defaultRedisScript.setResultType(Long.class);
        return defaultRedisScript;
    }

}
